#pragma once
#include "Object.h"

#define CTL_CODE_PRINT  CTL_CODE(FILE_DEVICE_UNKNOWN, 0x8001, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define CTL_CODE_PRINT2 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x8002, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)

NTSTATUS IrpGeneral(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS IrpDeviceControl(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);
NTSTATUS IrpRead(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);
NTSTATUS IrpWrite(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);

NTSTATUS IrpDeviceControl2(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);
NTSTATUS IrpRead2(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);
NTSTATUS IrpWrite2(IN struct _DEVICE_OBJECT* DeviceObject, IN OUT struct _IRP* Irp);
